Semantik Web  •  Hafta 01

Semantik Web'e Giriş

Motivasyon, katman mimarisi, temel kavramlar ve dönem projesinin tanıtımı

Lisansüstü Semantik Web Dersi  •  CMPE 583  •  10 Haftalık Program

Ders Programı

On haftada teoriden çalışan sisteme

HaftaKonuProjeye Katkısı
01Semantik Web'e GirişProblem tanımı, araç kurulumu
02XML & XML SchemaÜrün verisinin yapılandırılması
03RDF & RDFSTriple modeli, sözlük
04OWL TemelleriClass, Property, Individual
05OWL İleri & ProtégéRestriction, cardinality
06OWL-SServis olarak öneri motoru
07SWRL7 çıkarım kuralı (S1–S7)
08Java ile OWL API-IOntolojinin programatik kurulumu
09OWL API-II & ReasonerHermiT / Pellet ile çıkarım
10SWRL API & FinalUçtan uca çalışan sistem

Hafta 01  •  Kazanımlar

Bu hafta sonunda

  • Belge Web'i ile Veri Web'i arasındaki farkı örneklerle açıklayabileceksiniz.
  • Semantik Web katman mimarisinin her katmanını ve sorumluluğunu adlandırabileceksiniz.
  • Ontoloji, sınıf, özellik, birey ve aksiyom kavramlarını doğru kullanabileceksiniz.
  • Açık Dünya Varsayımı'nın veritabanı mantığından nerede ayrıldığını gösterebileceksiniz.
  • Dönem projesinin (alerji ontolojisi) hedefini ve mimarisini anlatabileceksiniz.

01

Motivasyon: Neden Semantik Web?

Bugünün Web'i insanlar için yazıldı. Makineler için yazılmış bir Web nasıl görünürdü?

Web bugün: belgelerin ağı

HTML, içeriğin nasıl görüneceğini anlatır; ne anlama geldiğini anlatmaz.

Tarayıcı için "Nisin" ile "36" arasında hiçbir tür farkı yoktur — ikisi de metin düğümüdür.

<div class="urun"> <h3>Eti Chocolate</h3> <p>İçindekiler: Askorbik asit, Nisin, Soya lesitini</p> </div>

Bir yazılım bu sayfadan "bu ürün laktoz alerjisi olan biri için riskli mi?" sorusunu cevaplayamaz.

Sözdizimi, anlam değildir

HTML

<p>Nisin</p>

Sunum. Makine: "metin".

XML

<katki>Nisin</katki>

Yapı. Makine: "katkı adlı alan".

OWL + SWRL

Nisin a FoodAdditives . Nisin Triggers Lactose .

Anlam. Makine: "laktoz alerjisini tetikler" → çıkarım yapabilir.

Geleneksel Web ile Semantik Web

BoyutGeleneksel Web (Belge Web'i)Semantik Web (Veri Web'i)
Temel birimSayfa / belgeKaynak ve üçlü (triple)
BağlantıAdlandırılmamış köprü metniAnlamı tanımlı ilişki (Triggers)
Anlam neredeOkuyanın zihnindeModelin içinde, formel
ErişimAnahtar kelime aramasıSorgu + çıkarım (SPARQL / SQWRL)
BütünleştirmeElle eşlemeOrtak IRI ile kendiliğinden
Yeni bilgiİnsan yazarReasoner ve kurallar üretir

Veri, enformasyon, bilgi

Veri

"Nisin"

Bağlamsız simge

Enformasyon

EAN_00004 Contain Nisin

Bağlama oturmuş veri

Bilgi

Nisin Triggers Lactose

İlişki + kural: çıkarım yapılabilir

Karar

PersonAtRisk(TC_001)

Eyleme dönüşen sonuç

Semantik Web teknolojileri bu merdivenin üçüncü basamağını makineye taşır; dördüncü basamak uygulama katmanının işidir.

Anahtar kelime arama nerede tıkanır?

SoruAnahtar kelime aramasıSemantik sistem
"Nisin içeren ürünler"Çalışır — metin eşleşmesiÇalışır
"Laktoz alerjisi olanlar için riskli ürünler"Başarısız — "laktoz" etikette yazmıyorKatkı → alerji tetikleme zincirinden çıkarır
"Ayşe'nin seçtiği ürün ona uygun mu?"Kişisel profil bilgisi yokKişi profili + ürün içeriği birlikte değerlendirilir

Fark, veri miktarında değil: eksik olan şey ilişkilerin makine tarafından yorumlanabilir biçimde ifade edilmesi.

Dönem Projesi  •  Problem

Paketli gıda etiketleri alerjik bireyler için okunaksızdır

  • Katkı maddeleri kod veya kimyasal adla yazılır: Sodium Ascorbate, Soy Lecithin, Casein.
  • Alerjen ilişkisi etikette açıkça yer almaz.
  • Aynı alerjen farklı isimlerle karşımıza çıkar.

Hedef sistem davranışı

Kullanıcı: laktoz alerjisi var, Eti Chocolate seçti.

Sistem: ürün Nisin içeriyor, Nisin Lactose tetikliyor → riskli.

Projedeki dört ürün ve içerikleri

Barkod (birey)Ürün adıKatkı maddeleriTetiklenen alerji
EAN_00001ETI CrackerAlginic_AcidGluten
EAN_00002Ulker DamakPhospore, Soy_LecitinEgg
EAN_00003Dardanel TonCasein, Sodium_AscorbiteLactose, Fish
EAN_00004Eti ChocolateAscorbic_Acid, Nisin, Soy_LecitinLactose, Egg

Son kolon etikette yazmaz — ontolojideki Triggers ilişkisinden gelir.

Semantik Web, bilginin makineler tarafından işlenebilir bir anlam taşıdığı, mevcut Web'in bir uzantısıdır.

Berners-Lee, Hendler & Lassila, The Semantic Web, Scientific American, 2001 — fikrin özeti

Makine-okunabilir ≠ makine-anlaşılabilir

Okunabilir

Ayrıştırılabilir sözdizimi: CSV, JSON, XML. Makine alanları görür, ilişkileri bilmez.

{"katki":"Nisin"}

Anlaşılabilir

Formel semantiği olan model: RDF/OWL. Makine türü, kısıtı ve sonucu çıkarır.

Nisin Triggers Lactose .

Bilgi temsili: neden mantık tabanlı?

YaklaşımGüçlü yanıSınırı
İlişkisel tabloHız, olgunlukŞema dışı ilişki, çıkarım yok
Kavram haritasıİnsana açıkFormel semantiği yok
Çerçeve (frame) sistemleriNesne benzeri modellemeStandart çıkarım yok
Tanımlama mantığı (OWL)Karar verilebilir çıkarım, standartİfade gücü sınırlı (aritmetik yok)
Kural tabanlı (SWRL)Zincirleme, built-in aritmetikKarar verilebilirlik için DL-safe kısıt

Projemiz son iki satırı birlikte kullanır: yapı OWL ile, hesap ve zincir SWRL ile modellenir.

02

Katman Mimarisi

Her katman altındakine dayanır: tanımlama, sözdizimi, veri, sözlük, mantık, kural, sorgu.

Semantik Web yığını

Trustkaynağa güven
Proofçıkarımın kanıtı
Unifying Logic  /  ReasonerHermiT, Pellet
Kural: SWRL, RIF   |   Sorgu: SPARQL, SQWRLHafta 07, 10
Ontoloji: OWLHafta 04–06
Taksonomi: RDFSHafta 03
Veri modeli: RDFHafta 03
Sözdizimi: XML  /  Turtle  /  JSON-LDHafta 02
Tanımlama: URI / IRI  +  UnicodeHafta 01

Temel katman: her şeyin bir adı var

  • IRI, global ve tekil bir tanımlayıcıdır; adres olması şart değildir.
  • Aynı kavramı iki kaynak aynı IRI ile gösterirse veri kendiliğinden birleşir.
  • Yerel adlar (Nisin) yalnızca bir namespace içinde anlamlıdır.
Ontoloji IRI http://EMU/AllergyOntology Namespace (NS) http://EMU/AllergyOntology# Birey IRI ...AllergyOntology#Nisin

Sözdizimi katmanı: taşıma biçimi

Aynı ontoloji birden çok serileştirme ile yazılabilir. Projemizin dosyası RDF/XML biçimindedir.

<!-- RDF/XML — ALLERGY_FIXED.owl --> <owl:NamedIndividual rdf:about="#Nisin"> <rdf:type rdf:resource="#FoodAdditives"/> <Triggers rdf:resource="#Lactose"/> </owl:NamedIndividual>
# Turtle — aynı bilgi :Nisin a :FoodAdditives ; :Triggers :Lactose .

Hafta 02'de XML Schema ile doğrulama, Hafta 03'te Turtle sözdizimi ayrıntılı işlenecek.

Veri katmanı: RDF ve üçlü (triple)

EAN_00004
Contain──────▶
Nisin
Triggers──────▶
Lactose

Her ok bir üçlüdür: özne – yüklem – nesne. Üçlüler birleşince bir graf oluşur; grafın üzerinde yürüyerek yeni bilgi çıkarılır.

Sözlük katmanı: RDFS

  • rdfs:subClassOf ile sınıf hiyerarşisi
  • rdfs:domain / rdfs:range ile özelliğin bağlamı
  • Basit çıkarım: alt sınıfın bireyi üst sınıfın da bireyidir
<owl:Class rdf:about="#Adult"> <rdfs:subClassOf rdf:resource="#Person"/> </owl:Class> <owl:ObjectProperty rdf:about="#Contain"> <rdfs:domain rdf:resource="#Product"/> <rdfs:range rdf:resource="#FoodAdditives"/> </owl:ObjectProperty>

Çıkarım örneği: Adult(TC_001) → Person(TC_001).

Ontoloji katmanı: OWL neyi ekler?

İhtiyaçRDFSOWL
Sınıf hiyerarşisiVarVar
Ayrıklık (disjoint)Yokowl:AllDisjointClasses
Kısıt (restriction)YoksomeValuesFrom, allValuesFrom
Sayı kısıtıYokminCardinality
Denklik / özdeşlikYokequivalentClass, sameAs

Projede Person, Product, FoodAdditives, Allergy sınıfları ayrık tanımlıdır — bir birey aynı anda hem ürün hem kişi olamaz.

Sorgu katmanı: SPARQL ve SQWRL

SPARQL

RDF grafı üzerinde standart sorgu dili (W3C).

SELECT ?u ?f WHERE { ?u :Contain ?f . ?f :Triggers :Lactose . }

SQWRL

SWRL üzerine kurulu sorgu dili; kural çıktıları üzerinde çalışır (Hafta 10).

Person(?p) ^ hasName(?p, ?n) ^ hasBMI(?p, ?b) -> sqwrl:select(?n, ?b)

Kural katmanı: SWRL neden gerekli?

OWL sınıf tanımlarında güçlüdür; ancak birden çok özelliği zincirleyip yeni bir ilişki üretmek ve aritmetik OWL'un dışındadır.

S6_GenericAllergen Person(?p) ^ hasAllergy(?p, ?al) ^ ChooseProduct(?p, ?u) ^ Contain(?u, ?f) ^ Triggers(?f, ?al) -> Effected_Allergen(?p, ?f)

Bu kural, projedeki risk analizinin çekirdeğidir; Hafta 07'de ayrıntılı işlenecek.

Mantık katmanı: reasoner üç iş yapar

Tutarlılık

Ontoloji çelişki içeriyor mu? isConsistent()

Sınıflandırma

Hangi sınıf hangisinin altına düşer? Gizli hiyerarşi ortaya çıkar.

Gerçekleme

Her birey hangi sınıfların üyesi? getTypes()

Projede HermiT bu üç işi yapar; SWRL kurallarını ise Drools tabanlı SWRL kural motoru çalıştırır (Hafta 09–10).

Üst katmanlar: kanıt ve güven

  • Proof: "Bu sonuca nasıl vardın?" — çıkarımın izini sürebilme. Sağlık ve gıda gibi alanlarda gerekçe göstermek zorunludur.
  • Trust: Veri kaynağı güvenilir mi? İmza, köken (provenance) ve politika bilgisi.
  • Projemiz bu katmanı, her çıkarımı üreten kuralı raporlayarak basitçe taklit eder: "TC_001 riskli, çünkü S6 + S7".

Katmanların projedeki karşılığı

KatmanProjedeki karşılığıHafta
IRIhttp://EMU/AllergyOntology#01
XMLALLERGY_FIXED.owl (RDF/XML)02
RDF / RDFSTriple'lar, subClassOf, domain/range03
OWL4 sınıf, 10 özellik, ayrık sınıflar, kısıtlar04–05
ServisOWL-S ile öneri servisi tanımı06
KuralS1–S7 SWRL kuralları07
APIOWL API + SWRL API (Java, NetBeans)08–10
SorguSQWRL sorguları (Q1–Q3)10

03

Temel Kavramlar

Ontoloji, sınıf, özellik, birey, aksiyom ve çıkarım.

Ontoloji nedir?

Bir paylaşılan kavramsallaştırmanın formel ve açık belirtimi.

Formel

Makine yorumlayabilir

Açık

Kavramlar yazılı tanımlı

Paylaşılan

Topluluk üzerinde uzlaşır

Kavramsallaştırma

Alanın soyut modeli

Anlam spektrumu

Yapıİfade gücüGıda örneği
Terim listesiSadece isimlerKatkı maddesi adları listesi
TaksonomiAlt/üst ilişkisiKatkı → koruyucu → Nisin
TezaurusEşanlam, ilişkili terimCasein ≈ süt proteini
OntolojiKısıt + mantık + çıkarım"Nisin içeren ürün laktoz alerjisi olan için risklidir"

Projemiz en alt satırdadır: kısıtlar ve kurallar sayesinde sistem yazılmayan bilgiyi üretir.

Dört yapı taşı

KavramAnlamıProjedeki örnek
ClassBireyler kümesiPerson, Product, FoodAdditives, Allergy
Object PropertyBirey → birey ilişkisiContain, Triggers, hasAllergy, ChooseProduct
Datatype PropertyBirey → veri değerihasAge, hasWeight, hasHeight, hasBMI, hasName
IndividualSomut nesneTC_001, EAN_00004, Nisin, Lactose
AxiomDoğru kabul edilen ifadeAdult ⊑ Person, sınıfların ayrıklığı

Alerji ontolojisinin iskeleti

PersonTC_001 … TC_004
ProductEAN_00001 … 00004
FoodAdditivesNisin, Casein, …
AllergyLactose, Egg, Fish, Gluten
ChooseProduct ▶
Contain ▶
Triggers ▶
◀ hasAllergy

Risk zinciri bu dört sınıf arasında dolaşır: Person → Product → FoodAdditives → Allergy ve geri Person.

Namespace kodda nasıl görünür?

static final String NS = "http://EMU/AllergyOntology#"; OWLClass risk = df.getOWLClass(IRI.create(NS + "PersonAtRisk")); OWLObjectProperty contain = df.getOWLObjectProperty(IRI.create(NS + "Contain"));

Java tarafında her varlığa bu şekilde erişilir. Namespace'i yanlış yazmak, "sınıf bulunamadı" değil sessizce boş sonuç üretir — en sık yapılan hatadır.

Açık Dünya Varsayımı (OWA)

Ontolojide yazılmamış olan yanlış değildir; yalnızca bilinmiyordur.

Bu yüzden "bu üründe alerjen yok" sonucu, ancak bir kapalılık aksiyomu (örn. cardinality) eklenirse çıkarılabilir.

Projeden örnek

EAN_00001 Contain Alginic_Acid .

Bu ürün yalnızca Alginic_Acid içerir demiyoruz. Başka katkılar da olabilir — henüz bilinmiyor.

Tekil isim varsayımı yoktur

İki farklı IRI, aksi belirtilmedikçe aynı nesneyi gösterebilir. Gıda alanında bu kural değil, gerçektir: aynı katkı farklı ülkelerde farklı adla anılır.

:Soy_Lecitin owl:sameAs :E322 . :Sodium_Ascorbite owl:sameAs :E301 .
:Nisin owl:differentFrom :Casein .

Ayrıklık ve farklılık aksiyomları olmadan reasoner "belki aynıdır" der ve beklediğiniz çelişkiyi bulmaz.

Veritabanı ile ontoloji aynı şey değildir

Boyutİlişkisel veritabanı (CWA)Ontoloji (OWA)
Eksik veriYok sayılır → yanlışBilinmiyor
ŞemaKısıtlayıcı, veriyi reddederBetimleyici, çıkarım üretir
Aynı isimAnahtar tekilliğisameAs ile bağlanır
Yeni bilgiINSERT ileÇıkarım ile de
TutarsızlıkKısıt ihlaliMantıksal çelişki (reasoner bulur)

Sık hata: ontolojiyi tablo gibi kurup "neden çıkarım gelmiyor" diye sormak.

Monotonluk ve sonuçları

  • Yeni aksiyom eklemek, önceki çıkarımları geçersiz kılmaz.
  • Bu yüzden OWL'da "istisna" yazamazsınız: "tüm ürünler güvenlidir, şu ikisi hariç" ifadesi doğrudan modellenemez.
  • Pratik sonuç: riski pozitif kanıtla modelleyin — S6 kuralında olduğu gibi tetikleyici zinciri kurun.
  • Kapalı dünya davranışı gerekiyorsa SWRL built-in'leri ve sayı kısıtları ile sınırlı biçimde taklit edilir.

Çıkarım nasıl işler? TC_001 örneği

veriliTC_001 hasAllergy Lactose ; ChooseProduct EAN_00004 ; hasAge 38 .
veriliEAN_00004 Contain Nisin .   Nisin Triggers Lactose .
S6 →TC_001 Effected_Allergen Nisin
S7 →PersonAtRisk(TC_001)
S5 →Adult(TC_001)   (hasAge ≥ 18)

Hiçbiri dosyaya elle yazılmadı; üçü de kural motorunun ürünü. Bu, projenin son çıktısıdır.

04

Dönem Projesi

SWRL tabanlı semantik paketli gıda analiz ve akıllı öneri sistemi.

Ne inşa edeceğiz?

  • Gıda ürünlerini, katkı maddelerini ve alerjileri modelleyen bir OWL ontolojisi
  • Risk ve öneri mantığını taşıyan yedi SWRL kuralı
  • OWL API + SWRL API ile çalışan bir Java uygulaması (NetBeans, Maven)
  • HermiT ile tutarlılık ve sınıflandırma denetimi
  • SQWRL sorguları ile raporlama

Teslim edilen çıktı

ALLERGY_FIXED.owl AllergyReasoner (Maven projesi) ALLERGY_INFERRED.owl konsol raporu

Sistem mimarisi

ProtégéOntoloji + kural tasarımı
OWL dosyasıALLERGY_FIXED.owl
OWL APIYükleme, envanter, aksiyom
SWRL API + DroolsKuralları çalıştır, materialize et
HermiT + SQWRLDenetim ve raporlama

Sekiz adımlı akış Main.java içinde birebir bu sırayla kodlanmıştır (ADIM 1 … ADIM 8).

Ontoloji kodu: sınıflar

<owl:Class rdf:about="#Person"/> <owl:Class rdf:about="#Product"/> <owl:Class rdf:about="#FoodAdditives"/> <owl:Class rdf:about="#Allergy"/> <owl:Class rdf:about="#Adult"> <rdfs:subClassOf rdf:resource="#Person"/> </owl:Class> <owl:AllDisjointClasses> <owl:members rdf:parseType="Collection"> <rdf:Description rdf:about="#Person"/> <rdf:Description rdf:about="#Product"/> <rdf:Description rdf:about="#FoodAdditives"/> <rdf:Description rdf:about="#Allergy"/> </owl:members> </owl:AllDisjointClasses>

Adult ve PersonAtRisk sınıfları elle doldurulmaz; üyeleri kurallardan gelir.

Ontoloji kodu: nesne özellikleri

<owl:ObjectProperty rdf:about="#Contain"> <rdfs:domain rdf:resource="#Product"/> <rdfs:range rdf:resource="#FoodAdditives"/> </owl:ObjectProperty> <owl:ObjectProperty rdf:about="#Triggers"> <rdfs:domain rdf:resource="#FoodAdditives"/> <rdfs:range rdf:resource="#Allergy"/> </owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#Lactose_Allergen"> <rdfs:subPropertyOf rdf:resource="#Effected_Allergen"/> <rdfs:domain rdf:resource="#Person"/> <rdfs:range rdf:resource="#FoodAdditives"/> </owl:ObjectProperty>

Dört alerjene özgü özellik (Egg_, Fish_, Gluten_, Lactose_Allergen) tek bir üst özelliğin altındadır: Effected_Allergen.

Ontoloji kodu: veri özellikleri

<owl:DatatypeProperty rdf:about="#hasAge"> <rdfs:domain rdf:resource="#Person"/> <rdfs:range rdf:resource="&xsd;int"/> </owl:DatatypeProperty> <owl:DatatypeProperty rdf:about="#hasBMI"> <rdfs:domain rdf:resource="#Person"/> <rdfs:range rdf:resource="&xsd;double"/> </owl:DatatypeProperty>
ÖzellikTipKaynak
hasNamestringelle
hasAgeintelle
hasWeightdoubleelle
hasHeightdoubleelle
hasBMIdoubleS4 kuralı

Ontoloji kodu: ürün bireyleri

<owl:NamedIndividual rdf:about="#EAN_00004"> <rdf:type rdf:resource="#Product"/> <Contain rdf:resource="#Ascorbic_Acid"/> <Contain rdf:resource="#Nisin"/> <Contain rdf:resource="#Soy_Lecitin"/> <hasProductName rdf:datatype="&xsd;string">Eti Chocolate</hasProductName> </owl:NamedIndividual> <owl:NamedIndividual rdf:about="#Nisin"> <rdf:type rdf:resource="#FoodAdditives"/> <Triggers rdf:resource="#Lactose"/> </owl:NamedIndividual>

Ürün ile alerji arasında doğrudan bağ yoktur; bağ katkı maddesi üzerinden kurulur — modelin en önemli tasarım kararı.

Ontoloji kodu: kişi profilleri

BireyAdYaşKilo / BoyAlerjiSeçtiği ürün
TC_001Ayse3867.5 / 1.68LactoseEAN_00004
TC_002FATMA1384.6 / 1.73LactoseEAN_00003
TC_003MEHMET3593.0 / 1.87Fish, LactoseEAN_00003
TC_004AYNUR5491.0 / 1.65Egg, GlutenEAN_00002

TC_002 on üç yaşındadır: S5 kuralı ile Adult çıkarımı yapılmayacak — kuralın negatif test durumu.

Projedeki yedi SWRL kuralı

KuralAmacıÜrettiği bilgi
S1_FishRiskSodium Ascorbate → balık riskiFish_Allergen
S2_LactoseCaseinCasein → laktoz riskiLactose_Allergen
S3_LactoseNisinNisin → laktoz riskiLactose_Allergen
S4_BMIKilo ve boydan BMI hesabıhasBMI (built-in aritmetik)
S5_AdultYaş ≥ 18Adult
S6_GenericAllergenGenel risk zinciriEffected_Allergen
S7_RiskClassEtkilenen kişiyi sınıflandırPersonAtRisk

Kural okumayı öğrenmek: S4_BMI

Person(?p) ^ hasWeight(?p, ?w) ^ hasHeight(?p, ?h) ^ swrlb:multiply(?h2, ?h, ?h) ^ swrlb:divide(?b, ?w, ?h2) -> hasBMI(?p, ?b)
  • ^ mantıksal VE; oklar gövdeden başa.
  • Built-in'lerde ilk argüman sonuçtur: multiply(?h2, ?h, ?h) → ?h2 = ?h × ?h.
  • Başta kullanılan her değişken gövdede bağlanmalıdır (güvenlik).
Kişiw / hÇıkarılan BMI
TC_00167.5 / 1.6823.92
TC_00393.0 / 1.8726.60
TC_00491.0 / 1.6533.43

Protégé'de göreceğiniz ekran: sınıf hiyerarşisi

Active ontologyEntitiesIndividuals by classSWRLTabOntoGraf
Class hierarchy ▾ owl:Thing ▾ Person Adult PersonAtRisk Product FoodAdditives Allergy
Description: PersonAtRisk SubClass Of   Person Disjoint With   Product, FoodAdditives, Allergy Annotations   rdfs:label "Riskli Kişi"@tr Instances (inferred) TC_001, TC_002, TC_003, TC_004

Şematik gösterim — sekme adları ve panel yerleşimi gerçek Protégé oturumuyla eşleşir.

Protégé'de göreceğiniz ekran: birey bildirimleri

EntitiesIndividuals by classSWRLTab
Individuals: Person TC_001 TC_002TC_003TC_004
Object property assertions hasAllergy  Lactose ChooseProduct  EAN_00004 Effected_Allergen  Nisin   (inferred) Data property assertions hasName "Ayse"  ·  hasAge 38  ·  hasWeight 67.5 hasBMI 23.92   (inferred)

Turuncu satırlar kural motorunun ekledikleridir; Protégé çıkarılan bildirimleri farklı renkte gösterir.

Protégé'de göreceğiniz ekran: SWRLTab

EntitiesIndividuals by classSWRLTab
NameRule
S5_AdultPerson(?p) ^ hasAge(?p, ?a) ^ swrlb:greaterThanOrEqual(?a, 18) → Adult(?p)
S6_GenericAllergenPerson(?p) ^ hasAllergy(?p, ?al) ^ ChooseProduct(?p, ?u) ^ Contain(?u, ?f) ^ Triggers(?f, ?al) → Effected_Allergen(?p, ?f)
S7_RiskClassPerson(?p) ^ Effected_Allergen(?p, ?f) → PersonAtRisk(?p)
New Edit OWL+SWRL → Drools Run Drools Drools → OWL

Üç düğmenin sırası önemlidir; Hafta 07 ve 10'da bu akış ayrıntılı gösterilecek.

Dönem sonunda göreceğiniz çıktı

ADIM 3 — HermiT ON Denetim (kural ONCESI) Tutarli mi? true PersonAtRisk uyeleri (kural oncesi, BOS beklenir): [] ADIM 5 — SWRLRuleEngine.infer() (Drools) infer() tamamlandi (812 ms). Kural ciktilari ontolojiye ASSERTED olarak yazildi. ADIM 6 — SQWRL Sorgulari Q1 — Kisi basina BMI: Ayse BMI = 23.92 MEHMET BMI = 26.60 Q2 — Riskli secimler: TC_001 -> EAN_00004 [Nisin] ADIM 7 — HermiT SON Denetim PersonAtRisk uyeleri: [TC_001, TC_002, TC_003, TC_004] Adult uyeleri : [TC_001, TC_003, TC_004]

Kural öncesi boş olan PersonAtRisk listesinin dolması, sistemin çalıştığının kanıtıdır.

Kuracağınız araçlar

AraçRolüNot
Protégé 5.5+Ontoloji ve kural düzenlemeSWRLTab eklentisi ile
Java JDK 8 / 11Çalıştırma ortamıSWRL API uyumu için 8 önerilir
NetBeansIDEMaven projesi desteği
OWL API 4.xOntolojiyi programatik yönetmeMaven bağımlılığı
SWRL API + DroolsKural motoruswrlapi-drools-engine
HermiT / PelletReasonerTutarlılık ve sınıflandırma

Hafta 08'de pom.xml bağımlılıkları satır satır kurulacaktır.

05

Ödev ve Proje Adımı

Hafta 01 teslimi: çalışma ortamı + ilk kavram haritası.

Ödev 1 — Ortam kurulumu ve alan analizi

  1. Protégé'yi kurun; SWRLTab sekmesinin göründüğünü doğrulayın.
  2. JDK ve NetBeans kurulumunu tamamlayın; sürüm çıktılarını ekran görüntüsü ile belgeleyin.
  3. ALLERGY_FIXED.owl dosyasını açın; sınıf ve birey sayılarını raporlayın.
  4. Kendi seçtiğiniz üç paketli ürünün etiketini yazıya geçirin ve katkı → alerji eşlemesini önerin.

Teslim

2–3 sayfa PDF: ekran görüntüleri, ürün tablosu, önerilen kavram listesi (sınıf / özellik / birey ayrımı yapılmış).

Hafta 02'nin sonunda bu ödevin ayrıntılı çözümü ayrı bir bölüm olarak sunulacaktır.

Değerlendirme ölçütleri

ÖlçütAğırlıkBeklenen
Ortam kurulumu20%Protégé + SWRLTab + JDK + NetBeans çalışıyor
Ontoloji okuma25%Sınıf, özellik, birey sayıları ve rolleri doğru
Alan analizi35%Katkı → alerji eşlemesi gerekçeli
Kavram ayrımı20%Sınıf ile birey karıştırılmamış

En sık hata: Nisin gibi somut bir katkıyı sınıf olarak modellemek.

Kaynaklar

  • Berners-Lee, T., Hendler, J., Lassila, O. — The Semantic Web, Scientific American, 2001.
  • Allemang, D., Hendler, J. — Semantic Web for the Working Ontologist, 2nd ed., Morgan Kaufmann.
  • Hitzler, P., Krötzsch, M., Rudolph, S. — Foundations of Semantic Web Technologies, CRC Press.
  • W3C — OWL 2 Primer; RDF 1.1 Primer; SWRL Submission (2004).
  • Stanford BMIR — Protégé belgeleri ve SWRLTab / SWRLAPI belgeleri.
  • Horridge, M. — A Practical Guide To Building OWL Ontologies Using Protégé.

Özet  •  1 / 2

Kavramsal çerçeve

  • Bugünün Web'i sunumu kodlar; Semantik Web anlamı kodlar.
  • Katman yığını aşağıdan yukarı: IRI → XML → RDF → RDFS → OWL → kural/sorgu → mantık → kanıt → güven.
  • Ontoloji = sınıf + özellik + birey + aksiyom; anlam gücü kısıtlardan gelir.
  • OWA ve tekil isim varsayımının yokluğu, ontolojiyi veritabanından ayıran iki temel karardır.
  • Çıkarım, yazılmayan bilgiyi üretir; sistemin değeri buradadır.

Özet  •  2 / 2

Proje ve sonraki adım

  • Proje alanı: paketli gıda, katkı maddeleri, alerjiler, kişi profilleri.
  • Dört sınıf, on özellik, on yedi birey, yedi SWRL kuralı.
  • Risk zinciri: Person → Product → FoodAdditives → Allergy.
  • Araç zinciri: Protégé → OWL dosyası → OWL API → SWRL API/Drools → HermiT → SQWRL.

Hafta 02'de

XML & XML Schema: ürün verisinin yapılandırılması, XSD ile doğrulama ve RDF/XML sözdizimine hazırlık.

Ayrıca: Ödev 1'in ayrıntılı çözümü.

Tekrar Soruları

Kendinizi sınayın

  1. Belge Web'i ile Veri Web'ini bir cümlede ayırt edin.
  2. Katman yığınında RDFS ile OWL'un rolleri nasıl ayrılır?
  3. Bir IRI ile bir URL arasındaki fark nedir?
  4. Açık Dünya Varsayımı, "bu ürün güvenlidir" sonucunu neden engeller?
  1. Tekil isim varsayımının olmaması gıda alanında hangi soruna çözüm sunar?
  2. Nisin sınıf mı, birey mi? Gerekçelendirin.
  3. S6 kuralının ürettiği bilgi OWL ile neden ifade edilemez?
  4. Reasoner'ın üç işlevini projedeki karşılıklarıyla eşleştirin.

Alıştırma  •  Sınıf içi

Yeni bir ürünü modelleyin

Etiketinde Whey Protein ve Wheat Starch yazan bir bisküvi (EAN_00005) ontolojiye ekleniyor.

  1. Hangi bireyler, hangi sınıflara eklenmeli?
  2. Hangi Triggers bildirimleri gerekir?
  3. Bu ürünü seçen TC_004 için hangi kural(lar) tetiklenir?
  4. Sonuç olarak hangi yeni aksiyomlar çıkarılır?

Yazacağınız üçlüler (şablon)

EAN_00005 a Product . EAN_00005 Contain ________ . ________ a FoodAdditives . ________ Triggers ________ .

Çözüm Hafta 02'nin ödev çözümü bölümünde verilecek.